//***********************************************************************
//	File:		Pwner.h
//	Author:		
//	Course:		SGP 1405
//	Purpose:	
//***********************************************************************
//***********************************************************************
//	Purposfully left blank for all comments regarding this file 
//	
//	
//	
//***********************************************************************



#pragma once
#include "Enemy.h"
class Pwner :
	public Enemy
{
public:
	Pwner(float posX = -1, float posY = -1);
	~Pwner() = default;
	Pwner(const Pwner&) = default; 
	Pwner& operator =(const Pwner&) = default; 

	//Type
	int GetType() const { return ENT_PWNER; }

	//Interface
	void Update(float dt);
	void Render();
	void HandleCollision(const IEntity* pOther);
	void HandleEvent();
	SGD::Rectangle GetRect() const;
	void ModifyHealth(float hpAmount);
	void ApplyFriction(float dt);
	//Enemy Interface
	void Attack(float dt);
	void Move(void);

	//Pwner specific 
	void Hide(); 

	//Accessors
	float	GetShield				(void)			{ return m_fShield; }
	float	GetMaxShield			(void)			{ return m_fMaxShield; }
	float	GetShieldRechargeRate	(void)			{ return m_fShieldRechargeRate; }
	float	GetShieldRechargeDelay	(void)			{ return m_fShieldRechargeDelay; }
	float	GetAttackCDL			(void)			{ return m_fAttackCDL; }
	int		GetProjectileType		(void)			{ return m_nProjectileType; }
	float GetDamage(void) { return m_fDamage; }


	//Mutators
	void	SetShield				(float s)		{ m_fShield = s; }
	void	SetMaxShield			(float ms)		{ m_fMaxShield = ms; }
	void	SetShieldRechargeRate	(float srr)		{ m_fShieldRechargeRate = srr; }
	void	SetShieldRechargeDelay	(float srd)		{ m_fShieldRechargeDelay = srd; }
	void	SetAttackCDL			(float aCDL)	{ m_fAttackCDL = aCDL; }
	void	SetProjectileType		(int pt)		{ m_nProjectileType = pt; }
	void SetDamage(float dam) { m_fDamage = dam; }

private:
	float m_fDamage = 0.0f;
	float m_fShield = 0.0f;
	float m_fMaxShield = 0.0f; 
	float m_fShieldRechargeRate = 0.0f;
	float m_fShieldRechargeDelay = 0.0f;
	float m_fAttackCDL = 0.0f; 
	int   m_nProjectileType = 0;
	Entity* pTarget;
	float m_fTotalHP = 100.0f;
	bool m_bMove = false;

	
};

